查看原文
其他

Arrow —— 时间的朋友 Python 库

晓飞的李 管窥程序 2024-03-29

继续我们的有趣的 Python 库之旅 ——

一个小小的库,或许能避免重复造轮子

一个不显眼的功能,也许能在关键时刻拯救我们

一个出乎意料的方法,或许能激发更多创意灵感

一个独特的技能,也许能成为我们的守护神……



时间过得真快,转眼间就要到春节了,春节的钟声已经在远方轻轻地响起。

此时你可能正在赶路的途中,可能已经围坐在家人的身旁,也可能仍在工作的岗位上忙碌着,不论你身处何方,在此祝愿你:

旅途平安,家庭和乐,工作顺利。

提前祝你春节快乐,万事如意!

说到时间,在编程世界中,可是个富有挑战性的话题。从一个简单的日历应用到复杂的时间序列分析,时间处理无处不在。但是,直到现在,许多程序员仍然在和冗长的  API、时区转换的复杂性,以及  Python  自带的  datetime  模块的局限性斗争。

此时,如果你听说有一个  Python  库能提供一种更加直观和友好的方式来操作日期和时间,你会如何反应?

这正是今天的主角  Arrow  提供的功能所在 —— 一个更好用的日期和时间库。

什么是  Arrow?

Arrow  是一个被称为程序员的时间处理利器的  Python  库。

从诞生起,它就是为了填补  Python  的 datetime  类型的功能空白而生的。

如果你曾经苦于  datetime 、time  和 calendar  等库带来的使用不便,或是时区转换让你头疼,那么  Arrow  将会是你的新朋友。

它的名字灵感来源于 “时间之箭”,意在强调它的快捷和功能性,而且还受到了 moment.jsrequests 库的启发,你可以期待它的如同后两者一样的易用性和强大功能。

项目地址:**https://github.com/arrow-py/arrow**

安装

Arrow  不是  Python  的标准库,但它非常容易安装。你只需要一个简单的  pip  命令:

pip install -U arrow

基本使用

Arrow  为日期和时间的处理提供了全面而简单的功能。用它来替代  Python  的 datetime  类型,你会发现很多事情变得轻松了。

创建和格式化时间

import arrow

# 从字符串、时间戳或其他格式直接获得  Arrow  对象 
arw = arrow.get('2013-05-11 21:23:58')
# 如: 2013-05-11T21:23:58+00:00

# 获取当前  UTC  时间 
utc = arrow.utcnow()
# 如: 2024-02-02T14:08:17.462608+00:00

# 时间偏移 
utc_shifted = utc.shift(hours=-1)
# 如: 2024-02-02T13:08:17.462608+00:00

# 格式化时间输出 
formatted_time = utc.format('YYYY-MM-DD HH:mm:ss ZZ')
# 如: 2024-02-02 14:08:17 +00:00

# 当前本地时间
a = arrow.now()
# 如: 2024-02-02T22:15:02.779458+08:00

# 特定时区当前时间
b = arrow.now('America/New_York')
# 如: 2024-02-02T09:17:52.297905-05:00

创建时间、转换时区、格式化时间输出都几乎是一行代码的事情。

时区转换

# 将 UTC  时间转换为特定时区的时间 
local = utc.to('Asia/Shanghai')
# 如 2024-02-02T22:08:17.462608+08:00

Arrow  深知程序员常常需要处理各种复杂的时区问题,因此为此提供了非常直观的操作方法。

这里列出了一些常见的时区代码及其对应的城市或地区,请参考:

时区代码对应城市或地区
'UTC'世界标准时间
'Europe/London'伦敦时间
'America/New_York'美国纽约时间
'Asia/Shanghai'中国上海时间
'Asia/Beijing'中国北京时间
'Europe/Paris'法国巴黎时间
'Asia/Tokyo'日本东京时间
'Australia/Sydney'澳大利亚悉尼时间
'America/Los_Angeles'美国洛杉矶时间
'Asia/Kolkata'印度时间
'Asia/Dubai'迪拜时间
'America/Sao_Paulo'巴西圣保罗时间
'Africa/Cairo'埃及开罗时间
'Asia/Seoul'韩国首尔时间

这个表格列出了一些常见的 IANA 时区代码及其对应的城市或地区。

高级功能

随着你的使用深入,你会发现  Arrow  有许多其他高级功能,例如处理  ISO 8601  标准或者生成人性化的时间表述等。

人性化时间

a = arrow.now()
b = a.shift(hours=-2)

# 输出相对现在的时间 
print(b.humanize())
# 如: 2 hours ago

# 甚至支持本地化 
print(b.humanize(locale='zh'))
# 2小时前

# 相对于特定时间
print(a.humanize(b, locale='zh'))
# 2小时后

Arrow  提供了本地化功能,让你能够以多种语言表述时间差。

时间戳处理

# 获得时间戳 
timestamp = local.timestamp()
# 如: 1706882897.462608

不再需要复杂的转换,一个方法调用,你想要的时间戳就在你面前。

实践

这里是把  Arrow  用于你的  Python  项目的一些小提示:

  • 尝试将  Arrow  用于处理日志文件中的时间戳。
  • 使用  Arrow  来处理用户跨多时区的时间显示问题。
  • 将 Arrow  集成到你的  Web  应用中,提供更加友好的日期时间展示。

总结

Arrow  为 Python  项目中涉及日期和时间的处理提供了一种更清晰、更高效的解决方案。

它优雅地解决了  datetime  无法解决的问题,并且极大地改善了开发的体验。

它的安装和使用都很简单,但功能强大,不论你是在做数据分析、Web  开发还是任何需要处理时间的应用,Arrow  都是一个宝贵的工具。试试看,它可能会让你对处理时间的工作爱不释手。

做时间 (Arrow) 的朋友,成就出色的自己。


点击 阅读原文 查看源码 
或访问:https://github.com/alisx/amazing_python_lib

如果你觉得我做的还行,请帮我点个赞
三连我也不介意,比心!
继续滑动看下一个
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存